const express = require('express')
const app = express();

const whitList = ['http://localhost:3000']; // 设置白名单
// 设置请求头信息
app.use(function (req, res, next) {
  const origin = req.headers.origin;
  if(whitList.includes(origin)) {

    // 设置那个源可以访问
    res.setHeader('Access-Control-Allow-Origin', origin);

    // 如果前端需要设置请求头，那后端就需要添加这个头信息
    res.setHeader('Access-Control-Allow-Headers', 'name'); 

    // 如果前端需要发送put请求的时候，就需要在后端添加这个头信息
    res.setHeader('Access-Control-Allow-Methods', 'PUT'); 

    // 预检的存活时间
    res.setHeader('Access-Control-Max-Age', 6);

    // 前端携带cookie
    res.setHeader('Access-Control-Allow-Credentials', true);

    // 前端如果要获取响应头信息需要添加这个头，需要添加多个的时候('Access-Control-Expose-Headers', 'name, age, sex')
    // 否则会报错（Refused to get unsafe header "name"）
    res.setHeader('Access-Control-Expose-Headers', 'name');

    // put请求会发送一个OPTIONS这个请求， put会发送两个请求，第一个是预检请求，问服务器是否可以跨域
    if(req.method === 'OPTIONS') {
      res.end(); // OPTINOS请求不做任何处理， 这个预检测不会一直发，会不定时的发送
    }

  }
  next()
})


app.put('/getdata', function (req, res) {
  console.log(req.headers)
  // 当前端发送cookie的时候，可以返回一个header， 
  res.setHeader('name', 'lisi')
  res.end('你好啊哈')
})
app.get('/getdata', function (req, res) {
  res.end('你好啊哈')
})
app.use(express.static(__dirname))
app.listen(4000, () => {
  console.log('server2启动在4000端口')
});